During the manufacturing process, a storage system (such as a hard disk drive (HDD) system) writes to the storage media and then reads back the signal to perform training. Storage system parameters (such as equalization filter coefficients, channel target coefficients, and/or soft output Viterbi coefficients) are determined and programmed during this training process. Some training techniques write unconstrained pseudo-random bit sequences to the storage medium. Although unconstrained pseudo-random bit sequences may be easy to generate, it may not be desirable to use such sequences when determining and setting certain storage system parameters. For example, a soft output Viterbi decoder may be expecting a signal from storage media that is constrained in some way (e.g., run length limited (RLL) constrained and/or maximum transition run (MTR) constrained). Training a soft output Viterbi decoder using an unconstrained bit sequence may produce a decoder which is configured with less than optimal parameters. A convenient and/or computationally inexpensive technique for generating RLL and/or MTR constrained signals would be desirable, for example for use in training a storage system.